#include "stdafx.h"

#include "thermal_jacobian.h"
#include "thermal_jacobian_matrix.h"

namespace blue_sky{
	template<class strategy_t>
	thermal_jacobian<strategy_t>::thermal_jacobian (bs_type_ctor_param param)
		: base_t(param)
	{
		jm = sp_jmatrix(BS_KERNEL.create_object(thermal_jacobian_matrix<strategy_t>::bs_type()));
	}

	/**
	* \brief  copy-ctor for calc_model
	* \param  src calc_model instance
	* */
	template <class strategy_t>
	thermal_jacobian<strategy_t>::thermal_jacobian (const this_t & src)
		: bs_refcounter (src), base_t(src)
	{
		if (&src != this)
			*this = src;
	}

	BLUE_SKY_TYPE_IMPL_T_EXT(1, (thermal_jacobian<base_strategy_fi>) , 1, (jacobian<base_strategy_fi>), "thermal_jacobian_fi", "thermal_jacobian_base-float-int", "Thermal_jacobian_base with float items and integer indexes", false);
	BLUE_SKY_TYPE_IMPL_T_EXT(1, (thermal_jacobian<base_strategy_di>) , 1, (jacobian<base_strategy_di>), "thermal_jacobian_di", "thermal_jacobian_base-double-int", "Thermal_jacobian_base with double items and integer indexes", false);
	BLUE_SKY_TYPE_IMPL_T_EXT(1, (thermal_jacobian<base_strategy_mixi>) , 1, (jacobian<base_strategy_mixi>), "thermal_jacobian_mixi", "thermal_jacobian_base-mix-int", "Thermal_jacobian_base with double items and integer indexes", false);

	BLUE_SKY_TYPE_STD_CREATE_T_DEF(thermal_jacobian, (class));
	BLUE_SKY_TYPE_STD_COPY_T_DEF(thermal_jacobian, (class));
}